package com.atguigu.gmall.product.client.impl;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.gmall.product.client.ProductFeignClient;
import com.atguigu.gmall.product.model.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Slf4j
@Component
public class ProductDegradeFeignClient implements ProductFeignClient {
    @Override
    public SkuInfo getSkuInfo(Long skuId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 根据商品SKU三级分类id查询分类信息
     * @param category3Id
     * @return
     */
    @Override
    public BaseCategoryView getCategoryView(Long category3Id) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 根据SKUID查询价格信息
     * @param skuId
     * @return
     */
    @Override
    public BigDecimal getSkuPrice(Long skuId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 根据SPUID查询海报列表
     * @param spuId
     * @return
     */
    @Override
    public List<SpuPoster> getSpuPosterBySpuId(long spuId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 根据spuId获取当前平台属性和平台属性值
     * @param skuId
     * @return
     */
    @Override
    public List<BaseAttrInfo> getAttrList(Long skuId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 根据SPU查询所有销售属性,用销售属性来判断当前商品是否被选中
     * @param skuId
     * @param spuId
     * @return
     */
    @Override
    public List<SpuSaleAttr> getSpuSaleAttrListCheckBySku(Long skuId, Long spuId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 查询每个商品SKU 销售属性和SKUID对照关系
     * @param spuId
     * @return
     */
    @Override
    public Map getSkuValueIdsMap(Long spuId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 查询所有分类列表,分类嵌套结果:一级分类对象中包含二级分类集合,二级分类对象中包含二级分类集合
     * @return
     */
    @Override
    public List<JSONObject> getBaseCategoryList() {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }

    /**
     * 根据品牌id查询品牌信息
     * @param tmId
     * @return
     */
    @Override
    public BaseTrademark getTrademarkById(Long tmId) {
        log.error("服务降级方法执行,,目标服务{},不可用","service-product");
        return null;
    }
}